home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 205_01 / bgdisp.c < prev    next >
Text File  |  1980-01-01  |  6KB  |  253 lines

  1. /* 
  2. HEADER:         CUG205.00;
  3. TITLE:          BGDISP.C - Backgammon II (for MS-DOS);
  4. VERSION:        2.00;
  5. DATE:           10/10/86;
  6. DESCRIPTION:    "Display subroutines for Backgammon II.";
  7. KEYWORDS:       games, backgammon;
  8. SYSTEM:         MS-DOS;
  9. FILENAME:       BGDISP.C;
  10. WARNINGS:       "The author claims the copyright to the MS-DOS version and
  11.                 authorizes non-commercial use only.";
  12. SEE-ALSO:       CUG102, BG.C, BGHELP.C;
  13. AUTHORS:        Michael Yokoyama;
  14. COMPILERS:      Microsoft v.3.00;
  15. */
  16.  
  17. extern int die1, die2;
  18. extern int mwin, ywin;
  19. extern int red[31], white[31];
  20.  
  21. header()
  22. {
  23.   cls();
  24.   printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"); 
  25.   printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    BACKGAMMON     =-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
  26.   printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
  27. }
  28.  
  29. score()
  30. {
  31.     printf ("\n\n\n              ----------------------------------\n");
  32.     printf ("              \|                                \|\n");
  33.     printf ("              \|           Scorecard            \|\n");
  34.     printf ("              \|                                \|\n");
  35.     printf ("              \|                                \|\n");
  36.     printf ("              \|    White (Me)  Red (You)       \|\n");
  37.     printf ("              \|    ----------  ----------      \|\n");
  38.     printf ("              \|        %2d         %2d           \|\n",mwin,ywin);
  39.     printf ("              \|                                \|\n");
  40.     printf ("              \|                                \|\n");
  41.     printf ("              ----------------------------------\n\n\n\n");
  42. }
  43.  
  44. cls()
  45. {
  46.   printf("%c[2J",27);
  47. }
  48.  
  49. dboard()
  50. {
  51.   int k;
  52.  
  53.   /* first line */
  54.   printf ("%c[37m\n\nWhite's Home                         (ME)%c[30m\n\n",27,27);
  55.  
  56.   /* top label line */
  57.   for (k = 1;k <= 6;k++)
  58.     printf (" %4d ",k);
  59.   printf ("    ");
  60.   for (k = 7;k <= 12;k++)
  61.     printf (" %4d ",k);
  62.   printf ("\n" );
  63.  
  64.   /* delimiter */ 
  65.   for (k = 1;k <= 78;k++)
  66.     printf ("=" );
  67.   printf ("\n" );
  68.  
  69.   /* letters line */
  70.   printf ("|" );
  71.   dcol(red,'R',white,'W',1,6);
  72.   printf (" || ");
  73.   dcol(red,'R',white,'W',7,12);
  74.   printf ("|\n" );
  75.  
  76.   /* numbers line */
  77.   printf ("|" );
  78.   dnum(red,white,1,6);
  79.   printf (" || ");
  80.   dnum(red,white,7,12);
  81.   printf ("|\n");
  82.  
  83.   printf ("|%37s||%37s|\n"," "," ");
  84.  
  85.   /* white's bar */
  86.   if (white[0] != 0)
  87.     printf ("|%c[37m%38dW%c[30m%37s|\n",27,white[0],27," ");
  88.   else 
  89.     printf ("|%37s||%37s|\n"," "," ");
  90.  
  91.   /* red's bar */
  92.   if (red[0] != 0)
  93.     printf ("|%c[31m%38dR%c[30m%37s|\n",27,red[0],27," "); 
  94.   else 
  95.     printf ("|%37s||%37s|\n"," "," ");
  96.  
  97.   printf ("|%37s||%37s|\n"," "," ");
  98.  
  99.   /* numbers line */
  100.   printf ("|" );
  101.   dnum(white,red,1,6);
  102.   printf (" || ");
  103.   dnum(white,red,7,12);
  104.   printf ("|\n");
  105.  
  106.   /* letters line */
  107.   printf ("|" );
  108.   dcol(white,'W',red,'R',1,6);
  109.   printf (" || ");
  110.   dcol(white,'W',red,'R',7,12);
  111.   printf ("|\n" );
  112.  
  113.   /* delimiter */ 
  114.   for (k = 1;k <= 78;k++)
  115.     printf ("=" );
  116.   printf ("\n" );
  117.  
  118.   /* bottom label line */
  119.   for (k = 24;k >= 19;k--)
  120.     printf (" %4d ",k);
  121.   printf ("    ");
  122.   for (k = 18;k >= 13;k--)
  123.     printf (" %4d ",k);
  124.  
  125.   /* last line */
  126.   printf ("%c[31m\n\nRed's Home                           (YOU)\n\n%c[30m",27,27);
  127. }
  128.  
  129. dnum(upcol,downcol,start,fin)
  130. int *upcol,*downcol,start,fin;
  131. {
  132.   int k,n;
  133.   for (k = start;k <= fin;k++) {
  134.     if ((n = upcol[k]) != 0 || (n = downcol[25-k]) != 0)
  135.  
  136. #if MSDOS
  137.       if ((upcol[k] && upcol == red) || (downcol[25-k] && downcol == red)) {
  138.         if (n < 10)
  139.           printf ("   %c[31m%1d%c[30m  ",27,n,27);
  140.         else
  141.           printf ("  %c[31m%2d%c[30m  ",27,n,27);
  142.       }
  143.     else {
  144.       if (n < 10)
  145.         printf ("   %c[37m%1d%c[30m  ",27,n,27);
  146.       else
  147.         printf ("  %c[37m%2d%c[30m  ",27,n,27);
  148.     }
  149. #else
  150.     printf (" %4d ",n);
  151. #endif
  152.     else printf ("      ");
  153.   }
  154. }
  155.  
  156. dcol(upcol,c1,downcol,c2,start,fin)
  157. int *upcol,*downcol,start,fin;
  158. char c1,c2;
  159. {
  160.   int k;
  161.   char c;
  162.   for (k = start;k <= fin;k++) {
  163.     c = ' ';
  164.     if (upcol[k] != 0)
  165.       c = c1;
  166.     if (downcol[25-k] != 0)
  167.       c = c2;
  168.     switch (c) {
  169.     case 'R':
  170. #if MSDOS
  171.       printf ("  %c[0;41;33m %c %c[0;43;30m ",27,c,27);  
  172. #else
  173.       printf ("   %c %c ",c);  
  174. #endif
  175.       break;
  176.     case 'W':
  177. #if MSDOS
  178.       printf ("  %c[0;47;33m %c %c[0;43;30m ",27,c,27);
  179. #else
  180.       printf ("   %c %c ",c);  
  181. #endif
  182.       break;
  183.     default:
  184.       printf ("      ",c);
  185.       break;
  186.     }
  187.   }
  188. }
  189.  
  190. show1()
  191. {
  192.   switch(rand() % 5) {
  193.   case 0:     
  194.     printf ("You rolled ");
  195.     break;
  196.   case 1:     
  197.     printf ("Your roll is ");
  198.     break;
  199.   case 2: 
  200.     printf ("Your roll:  ");
  201.     break;
  202.   case 3:     
  203.     printf ("Your dice show: ");
  204.     break;
  205.   case 4:     
  206.     printf ("You rolled a ");
  207.   }
  208. #if MSDOS
  209.   printf ("%c[31m%d %d%c[30m  ",27,die1,die2,27);
  210. #else
  211.   printf ("%d-%d.  ",die1,die2);
  212. #endif
  213. }
  214.  
  215. show2()
  216. {
  217. #if MSDOS
  218.   cls();
  219. #else
  220.   printf ("\n");
  221. #endif
  222.   switch(rand() % 5) {
  223.   case 0:     
  224.     printf ("I rolled");
  225.     break;
  226.   case 1:     
  227.     printf ("My roll was");
  228.     break;
  229.   case 2: 
  230.     printf ("I threw: ");
  231.     break;
  232.   case 3:     
  233.     printf ("My roll: ");
  234.     break;
  235.   case 4:     
  236.     printf ("I tossed");
  237.   }
  238. #if MSDOS
  239.   printf (" %c[37m%d %d%c[30m  ",27,die1,die2,27);
  240. #else
  241.   printf (" %d, %d, ",die1,die2);
  242. #endif
  243. }
  244.  
  245. sleep()
  246. {
  247.   int delay,delay1;
  248.  
  249.   for (delay = 1; delay <= 500; delay++)
  250.     for (delay1 = 1; delay1 <= 500; delay1++)
  251.       ;
  252. }
  253.